#!/usr/bin/env python

#################################################################################
#
# Copyright (c) 2006 Michigan State University
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#################################################################################

#################################################################################
#
#	Author:
#		Nathan Collins <npcollins@gmail.com>
#
#################################################################################

"""This modules handles sending emails.
"""

# imports
import smtplib, re

def isemail(emailstr):
	# verify if this string looks like an email address
	emailstr = emailstr.strip()
	emailcheck = re.compile(r'^[\w.-]+@[\w.-]+\.\w{2,5}$')
	check = emailcheck.search(emailstr)
	if check is not None:
		return 1
	return 0

def sendemail(emailFrom,emailTo,emailSubject,emailMessage):
	# send an email
	msg = 'Subject: %s\n%s' % (emailSubject, emailMessage)
	# the SMTP server
	serv = smtplib.SMTP('localhost')
	# send mail
	serv.sendmail(emailFrom,emailTo,msg)
	# and quit
	serv.quit()

def suggestApproved(emailAddr):
	# not a valid email? then we don't even try
	if isemail(emailAddr) == 0: return
	# form the email
	emailFrom = 'suggest@oais'
	emailSubject = 'OAIS Modification Reviewed.'
	emailMessage = """Dear OAIS user,
	
	Thank you for your suggestion of modification/deletion to the OAIS directory.
	It has been reviewed by one of our editors. Please continue to help us expand
	the OAIS directory by making additional suggestions.

	Thank you!
	"""
	# and send
	sendemail(emailFrom,emailTo,emailSubject,emailMessage)

def suggestApproved(emailAddr):
	# not a valid email? then we don't even try
	if isemail(emailAddr) == 0: return
	# form the email
	emailFrom = 'suggest@oais'
	emailSubject = 'OAIS Suggestion Approved!'
	emailMessage = """Dear OAIS user,
	
	Thank you for your suggestion to the OAIS directory. It has been reviewed
	by one of our editors and approved. Please continue to help us expand
	the OAIS directory by making additional suggestions.

	Thank you!
	"""
	# and send
	sendemail(emailFrom,emailTo,emailSubject,emailMessage)

def suggestRejected():
	# not a valid email? then we don't even try
	if isemail(emailAddr) == 0: return
	# form the email
	emailFrom = 'suggest@oais'
	emailSubject = 'OAIS Suggestion Rejected.'
	emailMessage = """Dear OAIS user,
	
	Thank you for your suggestion to the OAIS directory. However, after review
	by one of our editors, the decision was made to reject the suggestion.

	Reasons why a suggestion may have been rejected:
	* Records *
	- The record may have already been approved and added to the directory prior
	to review of your suggestion.
	- The editor may have felt the directory you suggested for the record was not specific enough.
	- Spelling/grammar mistakes.
	- Innacuracy of title/description.
	
	* Directory/Link *
	- The editor may have felt that the directory was not appropriate where you suggested.
	- Spelling mistakes.
	- The editor may have felt that your suggestion was too similar to an existing directory/link.

	Feel free to re-submit your suggestion with changes. Just because we were not able to add a suggestion doesn't mean we don't appreciate them, because we do! Please continue to help us by making suggestions!

	Thank you!
	"""
	# and send
	sendemail(emailFrom,emailTo,emailSubject,emailMessage)

# eof

